package 有向图的完全可达性;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author: AirMan
 * @date: 2025/6/4 11:35
 * @description:
 * 【题目描述】
 * 给定一个有向图，包含 N 个节点，节点编号分别为 1，2，...，N。现从 1 号节点开始，如
 * 果可以从 1 号节点的边可以到达任何节点，则输出 1，否则输出 -1。
 * 【输入描述】
 * 第一行包含两个正整数，表示节点数量 N 和边的数量 K。 后续 K 行，每行两个正整数 s 和 t，表
 * 示从 s 节点有一条边单向连接到 t 节点。
 * 【输出描述】
 * 如果可以从 1 号节点的边可以到达任何节点，则输出 1，否则输出 -1
 */
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        // 构造邻接矩阵
        List<List<Integer>> adjList = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            adjList.add(new ArrayList<>());
        }
        for (int i = 0; i < k; i++) {
            int s = sc.nextInt();
            int t = sc.nextInt();
            adjList.get(s - 1).add(t);
        }
        boolean[] visited = new boolean[n];
        // dfs 遍历，在main函数中，只需要执行一次bfs！
        dfs(adjList, visited, 1);
        visited[0] = true;
        // 如果vistied全为true，就说明完全可达
        for (boolean flag : visited) {
            if (!flag) {
                System.out.println(-1);
                return;
            }
        }
        System.out.println(1);
    }

    private static void dfs(List<List<Integer>> adjList, boolean[] visited, int node) {
        List<Integer> keys = adjList.get(node - 1);
        // 从 node 节点出发，进行dfs遍历
        for (Integer key : keys) {
            // 如果当前节点已经访问过了，就跳过
            if (!visited[key - 1]) {
                visited[key - 1] = true;
                dfs(adjList, visited, key);
            }
        }
    }
}